##### 101.1 Определение и настройка аппаратной части
Студент должен разбираться в управлении основными комплектующими ПК.
**Изучаем:**
•	получение информации об оборудовании;
•	управление устройствами;
•	понятия sysfs, udev, dbus, udevadm.

**Термины и утилиты:**
•	/sys/
•	/proc/
•	/dev/
•	modprobe
•	lsmod
•	lspci
•	lsusb
•	udevadm

Аппаратная часть современных компьютерных устройств — это отдельный полноценный курс. В данном уроке поверхностно рассматриваются базовые манипуляции с комплектующими ПК из ОС Linux.

При работе с устройствами Linux можно столкнуться со следующими понятиями:
•	**HAL** – демон, представляющий слой абстрагирования от конкретной АЧ, благодаря которому ОС может обращаться к устройствам через их абстрактные представления (конкретную инструкцию устройству будет передавать драйвер), на данный момент является устаревшим;
•	**Dbus** - шина, через которую процессы обмениваются информацией, в частности  приложения получают через нее информацию об оборудовании из ядра;
•	**udev** - менеджер устройств, пришедший на смену HAL.

_Преимущества udev:_
-	работает на уровне пользователя (больше свободы действий);
-	событийно-управляемый (а не опрашивает ядро по расписанию как HAL);
-	удобные файлы конфигурации (а не xml как у HAL);
-	содержит в системе только файлы активных устройств (а не всех устройств как HAL);
-	содержит имена устройств неизменными (в HAL имя зависит от порядка подключения).

В директории **/dev** находится информация об интерфейсах работы с драйверами ядра, например:
**/dev/sda**	 - первый жесткий диск;
**/dev/sr0**	 - CD-ROM;
_Примечание: в каталоге /dev, как правило, отсутствует информация о сетевых картах и видеокартах, так как работа с ними немного сложнее чем простые операции чтения-записи._
В /dev лежат специальные файлы устройств, которые можно считать указателями на драйверы. При помощи этих файлов происходит обращение к устройствам.

База данных подключенных устройств хранится в директории **/sys**, где они расположены по каталогам и именуются автоматически согласно идентификаторам, например:
**/sys/block** - перечень блочных устройств;
**/sys/bus**	 - перечень шин;
Если /dev содержит файлы устройств для работы с приложениями, то /sys содержит информацию об этих устройствах. 
_**Метафора: /sys это упаковка, а /dev – содержимое.**_

Информация о состоянии ОС и всех запущенных процессах находится в директории **/proc**, например:
**/proc/cpuinfo** - информация о процессоре;
**/proc/mounts** - подключенные файловые системы;
Самая интересная директория - **/proc/sys**, так как она не только содержит информацию о системе, но и позволяет ее редактировать «на лету».

---

Для работы с модулями ядра, например, с драйверами устройств, предназначены следующие команды:
•	**lsmod** – информация о модулях ядра;
•	**lspci** – информация об устройствах PCI;
•	**lspcmciа** – информация об устройствах PCMCIA;
•	**lsusb** – информация о шине USB;
•	**rmmod**	– удалить модуль;
•	**insmod**	– установить модуль;
•	**modprobe** – деликатно выполнить действия с модулем.

Отдельного внимания заслуживает инструменты работы с **udev – udevadm**, который может запускаться со следующими опциями:
•	**info**	 	– получение информации из БД;
•	**trigger**		– запросить события для устройства;
•	**settle**		– дождаться завершения обработки;
•	**control** 	– управление демоном;
•	**monitor** 	– следить за событиями;
•	**test** 		– симулировать запуск события.
_Примечание: мы не рассматриваем на данном этапе такие продвинутые действия, как создания собственных правил обработки событий оборудования, тем не менее вы сам можете их изучить._
